package edu.yctc.weblog.service;

import java.util.List;

import edu.yctc.weblog.dto.BlogDTO;
import edu.yctc.weblog.dto.BlogDetailDTO;
import edu.yctc.weblog.entity.BlogDO;
import edu.yctc.weblog.entity.PageDO;
import edu.yctc.weblog.entity.ResultDO;
import edu.yctc.weblog.utils.PageQueryUtil;

public interface BlogService {

    /**
     * 保存
     * 
     * @param blogDO
     * @return
     */
    public ResultDO<Void> saveBlog(BlogDO blogDO);

    public ResultDO<PageDO> getBlogPage(PageQueryUtil pageQueryUtil);

    public ResultDO<Void> deleteBatch(Long[] ids);

    public ResultDO<Integer> getTotalBlogs();

    public ResultDO<BlogDO> getBlogDOById(Long id);

    public ResultDO<Void> update(BlogDO blogDO);

    /**
     * 首页文章list
     * 
     * @param page
     * @return
     */
    public ResultDO<PageDO> getBlogForIndexPage(int page);

    /**
     * 首页侧边栏数据列表<br>
     * 1-点击最多<br>
     * 2-最新发布
     * 
     * @param type
     * @return
     */
    public ResultDO<List<BlogDTO>> getBlogListForIndexPage(int type);

    /**
     * 文章详情
     * 
     * @param blogId
     * @return
     */
    public ResultDO<BlogDetailDTO> getBlogDetail(Long blogId);

    /**
     * 根据标签获取文章列表
     * 
     * @param tagName
     * @param page
     * @return
     */
    public ResultDO<PageDO> getBlogPageByTag(String tagName, int page);

    /**
     * 根据分类获取文章列表
     * 
     * @param categoryName
     * @param page
     * @return
     */
    public ResultDO<PageDO> getBlogsPageByCategory(String categoryName, int page);

    /**
     * 根据搜索获取文章列表
     * 
     * @param keyword
     * @param page
     * @return
     */
    public ResultDO<PageDO> getBlogsPageBySearch(String keyword, int page);

    public ResultDO<BlogDetailDTO> getBlogDetailBySubUrl(String subUrl);

}
